package org.dr.st_docker.springaop.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * 包租婆不关心~
 * 中介关心的业务~（模拟周边功能）
 */
@Component
@Aspect
class BrokerAspect {
    /**
     * 单独完成前置后置通知
     * @param joinPoint
     */
    // @Before("execution(* org.dr.st_docker.springaop.service.LandlordService.service())")
    // public void before() {
    //     System.out.println("带租客看房");
    //     System.out.println("谈价格");
    // }
    //
    // @After("execution(* org.dr.st_docker.springaop.service.LandlordService.service())")
    // public void after() {
    //     System.out.println("交钥匙");
    // }

    //  使用 @Around 注解来同时完成前置和后置通知
    @Around("execution(* org.dr.st_docker.springaop.service.LandlordService.service())")
    public void around(ProceedingJoinPoint joinPoint) {
        System.out.println("带租客看房");
        System.out.println("谈价格");

        try {
            joinPoint.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }

        System.out.println("交钥匙");
    }

}